Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.

...powered by www.netzwerkartist.de...

 << zurück
Visual C# 2005 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2005

Visual C# 2005
1.320 S., mit 2 CDs, 59,90 Euro
Galileo Computing
ISBN 3-89842-586-X
gp Kapitel 15 Grundlagen zum Erstellen einer Windows-Anwendung
  gp 15.1 Die Entwicklungsumgebung
  gp 15.2 Eine erste Windows-Anwendung
  gp 15.3 Das Codegerüst einer Windows-Anwendung
    gp 15.3.1 Die Datei »Program.cs«
    gp 15.3.2 Die Dateien »Form1.cs« und »Form1.Designer.cs«
  gp 15.4 Ereignisse grafischer Windows-Komponenten
    gp 15.4.1 Grundlegende Anmerkungen
    gp 15.4.2 Ereignisse mit Ereignisdaten
    gp 15.4.3 Ereignishandler mit dem Visual Studio 2005 bereitstellen
    gp 15.4.4 Ereignisbehandlung mit den »OnXxx«-Methoden
  gp 15.5 Die Basisklassen einer Form
    gp 15.5.1 Die Klasse »Control«
    gp 15.5.2 Die Klasse »ScrollableControl«
    gp 15.5.3 Die Klasse »ContainerControl«
  gp 15.6 Die Eigenschaften einer Form
    gp 15.6.1 Die Rahmendarstellung einer Form
    gp 15.6.2 Formspezifisches Symbol festlegen
    gp 15.6.3 Die Schaltflächen in der Titelleiste
    gp 15.6.4 Spielereien mit »Opacity« und »TransparencyKey«
    gp 15.6.5 Fenster, die nicht verdeckt werden können
    gp 15.6.6 Den Mauszeiger verändern
    gp 15.6.7 Farbeinstellungen mit dem Typ »Color«
    gp 15.6.8 Schriftart mit dem Typ »Font«
    gp 15.6.9 Die Abmessungen einer Form festlegen
    gp 15.6.10 Die Position eines Fensters
    gp 15.6.11 Der Anzeigezustand eines Fensters nach dem Öffnen
    gp 15.6.12 Die Arbeitsfläche des Fensters (der Clientbereich)
    gp 15.6.13 Die Auflistung »ControlsCollection«
    gp 15.6.14 Zusammenfassung der Eigenschaften des Form-Objekts
  gp 15.7 Ereignisse einer Form
    gp 15.7.1 Ereignisse beim Erzeugen eines Fenster
    gp 15.7.2 Größenänderung einer Form
    gp 15.7.3 Ereignisse beim Schließen eines Fensters
  gp 15.8 Anwendungen mit mehreren Fenstern
    gp 15.8.1 Neue Forms hinzufügen
    gp 15.8.2 Formulare laden, anzeigen, verstecken und schließen
    gp 15.8.3 Mehrere Fenster verwalten
    gp 15.8.4 Formulare in einem eigenen Thread laufen lassen
    gp 15.8.5 Splash-Fenster
  gp 15.9 Modale Dialogfenster
    gp 15.9.1 Layout eines Dialogfensters
    gp 15.9.2 Die Eigenschaft »DialogResult«
    gp 15.9.3 Eine Form modal öffnen
    gp 15.9.4 Die Weitergabe von Resultaten aus einem Dialog
    gp 15.9.5 Dialoge mit einer »Übernehmen«-Schaltfläche
    gp 15.9.6 Fokussierreihenfolge und Standardschaltflächen
  gp 15.10 Meldungsfenster mit »MessageBox«
    gp 15.10.1 Die Methode »MessageBox.Show«
    gp 15.10.2 Der Rückgabewert der Meldungsfenster
  gp 15.11 Das Speichern in der Registrierungsdatenbank
    gp 15.11.1 Die Klassen »Registry« und »RegistrKey«
    gp 15.11.2 Programmbeispiel zum Speichern in der Registrierung
  gp 15.12 Die Klasse »Application«
    gp 15.12.1 Die Datei »AssemblyInfo.cs«
    gp 15.12.2 Mit »Application.DoEvents« wartende Ereignisse abrufen
    gp 15.12.3 Zusammenfassung Eigenschaften und Methoden


Galileo Computing

15.12 Die Klasse »Application«  downtop

In den vergangenen Abschnitten haben Sie einige Mitglieder der Klasse Application kennen gelernt und auch eingesetzt. Das Wichtigste war sicherlich die Methode Run, um die Nachrichtenschleife ins Leben zu rufen. Der Typ Application, der dem Namespace System.Windows.Forms angehört, stellt noch eine Reihe weiterer statischer Methoden und Eigenschaften zur Verfügung, um allgemeine Informationen der aktuellen Anwendung abzurufen.


Galileo Computing

15.12.1 Die Datei »AssemblyInfo.cs«  downtop

Einige allgemeine Informationen können in die Datei AssemblyInfo.cs als Attribute eingetragen werden, beispielsweise die Produktversion oder der Produktname. Nachfolgend sehen Sie einen Auszug aus dieser Datei.


...
[assembly: AssemblyTitle("Meine Anwendung")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Tollsoft")]
[assembly: AssemblyProduct("Tollsoft's Massenprodukt")]
[assembly: AssemblyCopyright("Copyright @ Tollsoft 2005")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
...

Zur Laufzeit lassen sich die Einträge in der Datei AssemblyInfo.cs auswerten. Mit


MessageBox.Show(Application.ProductName);

können Sie zum Beispiel den Eintrag unter AssemblyProduct abrufen und in einem Meldungsfenster ausgeben.


Galileo Computing

15.12.2 Mit »Application.DoEvents« wartende Ereignisse abrufedowntop

Ist einem Ereignis ein Ereignishandler zugeordnet, wird dieser ausgeführt. Ein Ereignishandler ist aber nichts anderes als eine Methode, die vom Anfang bis zum Ende ausgeführt wird, bevor die Kontrolle wieder an die aufrufende Methode übergeben wird. Wir haben es mit einer Methodenverkettung zu tun.

Wird beispielsweise ein Mausereignis ausgelöst, während die Windows-Anwendung damit beschäftigt ist, ein anderes, in der Ausführungszeit länger andauerndes Ereignis abzuarbeiten, wird das Mausereignis in einer Warteschlange gepuffert. Erst wenn der laufende Ereignishandler vollständig abgearbeitet ist, wird der nächste aus dem Puffer geholt. Die Folge ist ein nicht unbedeutendes Problem: Ein Ereignishandler, dessen Ausführung eine längere Zeit in Anspruch nimmt, wird die Bearbeitung der anderen eingehenden Ereignisse blockieren. Wie kann dieses Problem gelöst werden?

Eine mögliche Lösung wäre ein weiterer Thread. Die Programmierung kann aber im Einzelfall ziemlich komplex werden und sollte daher nicht als Nonplusultra angesehen werden. Einfacher wäre es doch, die Ausführung der laufenden Ereignisprozedur zu unterbrechen und das nächste anstehende Ereignis aus dem Puffer zu holen und zu bearbeiten. Genau das leistet die statische Methode DoEvents der Klasse Application.

Wir wollen uns die Wirkungsweise dieser Methode an einem Beispielprogramm ansehen. Das Formular enthält eine Textbox und drei Schaltflächen. Nach dem Anklicken der Schaltfläche Start wird im Ereignishandler des Ereignisses Click eine Schleife von 0 bis 1000000 durchlaufen und der aktuelle Zählerstand in die Textbox eingetragen. Die Abarbeitung der Schleife nimmt eine deutlich spürbare Zeitspanne in Anspruch, innerhalb der – wenn wir nicht mit DoEvents die Nachrichtenschleife unterbrechen – keine der beiden anderen Schaltflächen auf das Anklicken eine Reaktion zeigt. Die Schaltfläche Meldung soll nur ein einfaches Meldungsfenster anzeigen, die Schaltfläche Beenden die Laufzeit der Anwendung, unabhängig vom aktuellen Stand des Schleifenzählers, schließen.

Abbildung
Hier klicken, um das Bild zu vergrößern

Abbildung 15.21   Form des Programms »DoEventsDemo«

Der Programmcode dieses Beispiels ist wie folgt:


// --------------------------------------------------------------
// Beispiel: ...\Kapitel 15\DoEventsDemo
// --------------------------------------------------------------
public partial class Form1 : Form {
  private bool flag;
  // Ereignishandler des Click-Ereignisses des Buttons 'btnStart'
  private void btnStart_Click(object sender, EventArgs e) {
    btnMeldung.Focus();
    for (int i = 0; i < 1000000; i++) {
      // die Nachrichtenschleife unterbrechen und zur Abarbeitung
      // anstehende Ereignisse aus dem Puffer holen
      Application.DoEvents();
      if (flag)
        break;
      txtZahl.Text = i.ToString();
      txtZahl.Refresh();
    }
  } 
  // Ereignishandler des Click-Ereignisses des Buttons 'btnBeenden'
  private void btnBeenden_Click(object sender, EventArgs e) {
    this.flag = true;
    Application.Exit();
  }
  // Ereignishandler des Click-Ereignisses des Buttons 'btnMeldung'
  private void btnMeldung_Click(object sender, EventArgs e) {
    MessageBox.Show("Textausgabe unterbrochen", Application.ProductName);
  }
}

Der DoEvents-Aufruf sorgt dafür, dass die Ereignishandler der beiden anderen Schaltflächen eine Chance haben, die CPU in Anspruch zu nehmen. Kommentieren Sie den DoEvents-Aufruf aus, muss die Schleife zuerst bis zum Endwert durchlaufen werden. Mit dem Feld flag wird sichergestellt, dass für den Fall, dass die Anwendung beendet werden soll, die Schleife nicht dennoch zuerst bis zum Ende ausgeführt wird, bevor die Anwendung geschlossen wird.

Der Fokus sollte vor dem Eintritt in die Schleife auf einen anderen Button gelegt werden. Wenn Sie das versäumen, müssen vor dem Anzeigen der Meldung bzw. dem Schließen noch andere Ereignisse abgearbeitet werden, was zur Folge hat, dass die entsprechende Schaltfläche zweimal angeklickt werden muss.


Galileo Computing

15.12.3 Zusammenfassung Eigenschaften und Methoden  toptop

Die folgende Tabelle enthält einen Auszug der Eigenschaften und Methoden der Klasse Application.


Tabelle 15.18   Eigenschaften und Methoden des Typs »Application« (Auszug)

Eigenschaft/Methode Beschreibung
CompanyName (Eigenschaft) Gibt den der Anwendung zugeordneten Firmennamen zurück.
ExecutablePath (Eigenschaft) Liefert die Pfadangabe einschließlich des Dateinamens der ausführbaren Datei, die zum Starten der Anwendung verwendet wurde.
ProductName (Eigenschaft) Gibt den dieser Anwendung zugeordneten Produktnamen zurück.
ProductVersion (Eigenschaft) Gibt die dieser Anwendung zugeordnete Produktversion zurück.
StartupPath (Eigenschaft) Liefert die Angabe des Pfades, in dem sich die ausführbare Datei der Anwendung befindet. Der Name der ausführbaren Datei ist in der zurückgelieferten Zeichenfolge nicht enthalten.
DoEvents (Methode) Verarbeitet alle Windows-Meldungen, die sich derzeit in der Nachrichtenwarteschlange befinden.
EnableVisualStyles (Methode) Ermöglicht die Darstellung im XP-Stil.
Exit (Methode) Schließt alle Anwendungsfenster, sobald alle Nachrichten verarbeitet wurden.
ExitThread (Methode) Verlässt die Nachrichtenschleife für den aktuellen Thread und schließt alle Fenster des Threads.
Run (Methode) Beginnt die Ausführung einer Nachrichtenschleife einer Anwendung für den aktuellen Thread.

 << zurück
  
  Zum Katalog
Zum Katalog: Visual C# 2005
Visual C# 2005
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Fortgeschrittene Programmierung mit Visual C# 2005






 Fortgeschrittene
 Programmierung
 mit Visual C# 2005


Zum Katalog: Einstieg in Visual C# 2005






 Einstieg in
 Visual C# 2005


Zum Katalog: Einstieg in Visual Basic 2005






 Einstieg in
 Visual Basic 2005


Zum Katalog: Visual Basic 2005






 Visual Basic 2005


Zum Katalog: Java ist auch eine Insel






 Java ist auch eine
 Insel


Zum Katalog: Konzepte und Lösungen für Microsoft-Netzwerke






 Konzepte und
 Lösungen für
 Microsoft-Netzwerke


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo








Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de